你可以把 Dify 裝在自己的電腦,也可以用線上版的,直接到官網註冊帳號使用
使用 Docker compose 啟動,不知道 Docker 是什麼可以看這篇文章,docker compose 就是就是用來定義和執行多個 docker 容器的工具。
硬體規格要求如下
git clone https://github.com/langgenius/dify.git
dify/docker
中,這邊放了所有和 docker 有關的設定
cd dify/docker
.env
) 這邊直接複製他的範例即可
cp .env.example .env
這邊 Dify 有 nginx 的 container,會將服務開在我們電腦的 80 port 和 443 port (如果有啟動 https),如果你不想開在這些 port 或者電腦這些 port 已經被使用了可以自行修改 .env
# HTTP port
NGINX_PORT=80 # 這邊改成你想要的 port
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=80 # 這邊也要改
docker compose up -d # 這邊的 -d 是背景執行的意思
docker 會先去拉下 dify 的 image,然後再一一啟動這些容器,Dify 真的是很大很完整的一個專案,這個過程可能需要五分鐘左右
你可以用 docker ps
來檢查目前電腦中正在運行的容器,應該會看到 dify 相關的容器
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute
docker-web-1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
docker-worker-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker About a minute ago Up About a minute 5001/tcp
打開瀏覽器輸入 http://localhost/
應該就會看到 Dify 的設定畫面了
其他設定像是更新、設定環境變數等等請自行參考文件
也可以自己搭建前端後端和中介程式 (Middleware),Dify 在這方面做得很完善,適合進階使用者,尤其是想要自行修改 Dify 介面給自己用的開心的人,請參考文件。
官網連結
Zeabur 是一個專為開發者設計的雲端服務部署平台,簡化應用程式的部署過程。該平台支持多種程式語言和開發框架,並且只需幾個簡單的步驟即可完成部署,讓開發者能夠將更多精力集中於產品開發上。
更酷的是,其創辦人 Yuan Lin 是台灣人喔!前陣子我在 threads 上看到分享了一個 zeabur 的 vscode / cursor 的擴充套件,遇到了一些問題而無法一鍵部署,在下方留言求助他就馬上密我 IG,經過一番折騰與我測試後終於好了XD
目前開發者方案一個月是 5 美元,用量的計算則會免費送你 5 美元,蠻佛心的如果只是小專案的話。
點擊連結,直接按部署就可以用了,非常簡單,不過有時候會遇到 OpenAI API 國家不支援的問題,應該只要換機房就可以了。
不過如果你是用 Zeabur 部署,就不建議使用 Ollama 了,畢竟沒有 GPU。可以用雲端運算像是 AWS, GDP 或 Azure 等等,但只用 LLM API 是沒問題的。
到右上角設定 -> 模型供應商 這邊會看到 Dify 有支援的所有 LLM API (超級多...),包含前幾天我們
用到的 OpenAI, Groq, Anthropic 和本地的 Ollama 等等,按下設定然後輸入 API Key 即可使用
設定好長這樣,你可以查看該供應商提供的模型,並且限制在這個平台上的使用者能不能使用
如果你的 Dify API 是自己 build 起來的,而且 Ollama 也是在官網下載的,那可以直接在 Base url 填入 http://192.168.1.100:11434
。
不過如果你是使用 Docker 安裝 Dify 那就需要將 Base url 改成 http://host.docker.internal:11434
,因為如果你用的是 localhost
,Dify 會把這個 localhost
當成自己 container 中的 localhost,要特別注意。
新增完畢
回到主頁面,你應該會看到左邊有「建立應用」的字樣,你可以直接從「應用模板」拿別人設計好的應用來使用,也可以匯入別人做好的 Dify 工作流 (你可以把 Dify 應用匯出成一個叫 DSL 的檔案,其實就是一個 yaml 檔)
點擊建立應用會看到有四種應用,分別式聊天助手、文字生成應用、Agent 和工作流
這四種應用大概是:
文本生成和聊天助手的差別可以參考下表
文本生成 | 聊天助理 | |
---|---|---|
WebApp 介面 | 表單 + 結果 | 基於聊天 |
WebAPI 介面 | completion-messages |
chat-messages |
互動模式 | 一題一答 | 多輪對話 |
串流結果 | 支援 | 支援 |
上下文保留 | 每次交談 (session) | 持續 |
使用者輸入表單 | 支援 | 支援 |
數據集和插件 | 支援 | 支援 |
AI 開場白 | 不支援 | 支援 |
使用情境 | 翻譯、判斷、索引 | 聊天 |
這邊我們就用一個空白的應用來建立自己的 ChatGPT 吧!透過 Ollama 使用本地的 Llama3 模型
先建立空白應用,這邊我們選擇「聊天助手」,然後用「基礎編排」
進入畫面後,到右上角設定模型這邊把把模型改成 Ollama 的 llama3,當然你也可以用其他模型,像是前幾天我們下載的 Taide
在左邊的提示詞可以叫他使用繁體中文回覆我們,也可以自行設定變數來當作 prompt 的一部分
點擊左側變數欄位旁邊的新增按鈕
會看到有四種變數和一個基於 API 的變數 (新功能)
這邊我想設定一個下拉選項叫他 language,按他旁邊的操作可以進到設定
這邊我就用簡體中文、繁體中文和英文來當作選項,你也可以設定這個為必填選項。
然後就可以把這個變數加到我們的 Prompt,Dify 表示變數的方法是使用 {{}}
兩個大括號,裡面是變數名稱,他也會提示你有哪些變數,UX 超級讚😻
如果你不知道怎麼寫 prompt 也可以用右上角的「產生」,讓你這邊選擇的模型幫你生成 prompt,一個很好的參考,按下 Apply 可以直接使用
都設定完之後,可以先到右邊的聊天視窗去測試,這邊我選擇繁體中文,然後問他英文的問題,感覺效果不錯
然後你可以按下右上角的「發佈」,更新目前的修改,然後按下「運行」
就會跳出一個新的分頁:一個聊天視窗,馬上就可以測試了!如果你是部署在 Zeabur 上,馬上就可以把這個連結分享給你的親朋好友,然後跟他們說「我是 AI 工程師,這是我的作品,怎麼樣ㄚ😎」
總算是把 Dify 安裝好了,也順利建構自己的 ChatGPT,是不是很簡單ㄚ,你也可以到「探索」那邊看看別人做好的應用,直接拿來用,有些真的很不錯像是新聞摘要、寫程式的工作流等等
如果你已經是個有前後端開發經驗的老手了,也可以試試把在 Dify 發布的 API 加入到自己現有的應用中,超有趣的。這個部分之後我在介紹 API 串接的時候再詳細說吧~
明天來介紹另一個厲害的東西:Agent,與聊天助手最大的差別就是,他可以使用工具,期待一下吧~